#ifndef RAY_TRACE_PRO_SHADER_REGISTRY_H
#define RAY_TRACE_PRO_SHADER_REGISTRY_H

#include "Basic/GxLibBasic.h"

namespace RayTracePro
{
	class ShadingNode;

	typedef ShadingNode * (*CreateShaderFunc)();
	class ShaderRegistry : public GxLibBasic::Object
	{
	public:
		virtual void RegisterShader(const wchar_t * name, CreateShaderFunc shader_ctor) = 0;
		virtual int LoadShaderLibrary(const wchar_t * libraryName) = 0;
		virtual CreateShaderFunc FindShaderConstructor(const wchar_t * name) = 0;
		virtual ShadingNode * CreateShader(const wchar_t * name) = 0;
	};

	ShaderRegistry * CreateShaderRegistry();
}

#endif